<?php


namespace App\Libs\Common;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;


class PhpExcel
{
    /**
     * @param $data  接收一个二维数组  类似于下面数组
     *
     * $data = array(
     * array($fileName), //表头名和文件名
     * array('代发货','逾期订单','未完成订单','待审核订单','已出库'),
     * array(1000,1000,1000,1000,1000),
     * );
     *
     * $excelType  文件类型
     */
    public function downloadPhpexcel($data)
    {

        $fileName = $data[0]; //接收一个表头名称

        vendor("PHPExcel.PHPExcel");

        $objPHPExcel = new \PHPExcel();

        $objSheet = $objPHPExcel->getActiveSheet(0); //操作当前活动sheet

        $objSheet->getDefaultColumnDimension()->setWidth(20);//设置单元格的默认宽度

        $objSheet->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置全部垂直居中
        $objSheet->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置全部水平居中

        //设置 excel 表头样式
        $objSheet->setCellValue('A1',"$fileName"); //设置表头内容

        $ascii = chr(64 + count($data[1])); //获取要合并的列数
        $objSheet->mergeCells('A1:'.$ascii.'1');//合并行

        $objSheet->getStyle('A1')->getFont()->setBold(true);//设置是否加粗

        $objSheet->getRowDimension('1')->setRowHeight(30);//设置行高

        $objSheet->getStyle('A1')->getFont()->setSize(15);//设置字体大小


        $objSheet->fromArray($data);

        //生成Excel的头文件文件
        $fileName .= time();
        header('pragma:public');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="'.$fileName.'.xlsx"');//告诉浏览器要输出的文件名称
        header('Cache-Control: max-age=0');//禁止缓存

        //返回已经存好的文件目录地址提供下载
        $objWriter= \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');

        return $this->downloadPath($objWriter,$fileName);

    }

    public function downloadPath($objWriter,$fileName)
    {
        $filePath = "./Public/".$fileName.'.xls';
        $objWriter->save($filePath);

        //检查文件目录是否存在
        if(!file_exists($filePath)){
            $response = array(
                'status' => false,
                'url' => '',
                'name'=> ''
            );
        }else {
            $response = array(
                'status' => true,
                'url' => $filePath,
                'name'=> $fileName
            );
            return $response;
        }
    }











///**
//* @param $data  接收一个二维数组  类似于下面数组
//*
//* $data = array(
//* array($fileName), //表头名和文件名
//* array('代发货','逾期订单','未完成订单','待审核订单','已出库'),
//* array(1000,1000,1000,1000,1000),
//* );
//*
//* $excelType 文件类型
//*/
//    public function downloadPhpexcel($data,$excelType='Excel5')
//    {
//
//        $fileName = $data[0]; //接收一个表头名称
//
//        vendor("PHPExcel.PHPExcel");
//
//        $objPHPExcel = new \PHPExcel();
//
//        $objSheet = $objPHPExcel->getActiveSheet(); //操作当前活动sheet
//
//        $objSheet->getDefaultColumnDimension()->setWidth(20);//设置单元格的默认宽度
//
//        $objSheet->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置全部垂直居中
//        $objSheet->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置全部水平居中
//
//
//        //设置 excel 表头样式
//        $objSheet->setCellValue('A1',"$fileName"); //设置表头内容
//
//        $ascii = chr(64 + count($data[1])); //获取要合并的列数
//        $objSheet->mergeCells('A1:'.$ascii.'1');//合并行
//
//        $objSheet->getStyle('A1')->getFont()->setBold(true);//设置是否加粗
//
//        $objSheet->getRowDimension('1')->setRowHeight(30);//设置行高
//
//        $objSheet->getStyle('A1')->getFont()->setSize(15);//设置字体大小
//
//        $objSheet->getStyle('A1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);;//设置背景色
//
//        $objSheet->getStyle('A1')->getFill()->getStartColor()->setARGB('#EEEEE0');//设置背景色
//
//
//        $objSheet->fromArray($data);
//
//        //生成Excel文件
//        $objWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel5");
//
//        $this->browser_export($excelType,$fileName);
//
//        $objWriter->save ( 'php://output' );
//        exit;
//
//    }
//
//    /**
//     * @param $excelType   要输出的文件格式
//     * @param $fileName    要输出的文件名称
//     */
//    private function browser_export($excelType,$fileName)
//    {
//        if($excelType == 'Excel5')
//        {
//            header('Content-type:application/vnd.ms-excel;charset=utf-8');
//        }else{
//            header('Content-type:application/vnd.openxmlfromats-officedocument.spreadsheetml.sheet');//告诉浏览器输出的是07excel文件
//        }
////        header ( "Content-Type: application/force-download" );
//
//        header ( "Content-Disposition: attachment; filename=" .$fileName. time(). ".xls" );;//告诉浏览器要输出的文件名称
//
//        header('Cache-Control:max-age=0');//禁止缓存
//
//    }

}